package day08.exer;



/**
 * 4. 对象数组题目：
 * 定义类Student，包含三个属性：学号number(int)，年级state(int)，成绩
 * score(int)。 创建20个学生对象，学号为1到20，年级和成绩都由随机数确定。
 * 问题一：打印出3年级(state值为3）的学生信息。
 * 问题二：使用冒泡排序按学生成绩排序，并遍历所有学生信息
 * 提示：
 * 1) 生成随机数：Math.random()，返回值类型double;
 * 2) 四舍五入取整：Math.round(double d)，返回值类型long。
 * 练习3
 * 5.声明一个日期类型MyDate：有属性：年year,月month，日day。创建2个日期
 * 对象，分别赋值为：你的出生日期，你对象的出生日期，并显示信息。
 * @author Smartloe
 * @create 2021-05-04 18:14
 */
public class StudentTest {
    public static void main(String[] args) {
        //声明Student类型的数组；
        Student[] stus = new Student[20];//String[] arr = new String[];
        for (int i = 0; i < stus.length; i++) {
            //给数组元素赋值
            stus[i] = new Student();
            //给Student对象属性赋值
            stus[i].number = (i + 1);
            //年级：[1-6]
            stus[i].state = (int)(Math.random()*(6-1+1)+1);
            //成绩：[0-100]
            stus[i].score = (int)(Math.random()*(100-0+1));
        }
        //遍历学生数组
        for (int i = 0; i < stus.length; i++) {
//            System.out.println(stus[i].number+"\t"+stus[i].state+"\t"+stus[i].score);
            System.out.println(stus[i].info());
        }
        System.out.println();
        //问题一：打印出3年级(state值为3）的学生信息。
        for (int i = 0; i < stus.length; i++) {
            if (stus[i].state==3){
                System.out.println(stus[i].info());
            }
        }
        System.out.println("********************************");

        //问题二：使用冒泡排序按学生成绩排序，并遍历所有学生信息
        for (int i = 0; i < stus.length; i++) {
            for (int j = 0; j < stus.length-1-i; j++) {
                if (stus[j].score>stus[j+1].score){
                    //如果需要换序，交换的是数组的元素，Student对象！！
                    Student temp = stus[i];
                    stus[j] = stus[j+1];
                    stus[j+1] = temp;
                }
            }
        }
        //遍历学生数组
        for (int i = 0; i < stus.length; i++) {
//            System.out.println(stus[i].number+"\t"+stus[i].state+"\t"+stus[i].score);
            System.out.println(stus[i].info());
        }
    }
}
class Student{
    int number;//学号
    int state;//年级
    int score;//成绩

    //显示学生信息的方法
    public String info(){
        return "学号:"+number+"\t年级:"+state+"\t成绩:"+score;
    }
}
